package mongoDB

import (
	"fmt"
	"gopkg.in/mgo.v2"
)

var session *mgo.Session

func init() {
	var err error
	session, err = mgo.Dial("mongodb://root:Ssyer6662018@dds-bp1c21cd176344241739-pub.mongodb.rds.aliyuncs.com:3717,dds-bp1c21cd176344242568-pub.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-8398849")
	if err != nil {
		panic(err)
	}

	session.SetMode(mgo.Monotonic, true)
}
func GetSession() *mgo.Session {
	//记得使用完之后要及时关闭
	return session.Copy()
}

type Configs struct {
	DB         string
	Collection string
}

func (conf Configs) EnsureIndex(keys []string) {
	s := GetSession()
	defer s.Close()

	c := s.DB(conf.DB).C(conf.Collection)

	index := mgo.Index{
		Key:        keys,
		Unique:     false, //唯一索引
		DropDups:   false, //删除与以前索引的文档具有相同索引键的文档
		Background: true,  //后台异步建立索引
		Sparse:     true,  //仅索引包含关键字段的文档
	}
	err := c.EnsureIndex(index)
	if err != nil {
		fmt.Println(err)
	}
}

func (conf Configs) EnsureUniqueIndex(keys []string) {
	s := GetSession()
	defer s.Close()

	c := s.DB(conf.DB).C(conf.Collection)

	index := mgo.Index{
		Key:        keys,
		Unique:     true,  //唯一索引
		DropDups:   false, //删除与以前索引的文档具有相同索引键的文档
		Background: true,  //后台异步建立索引
		Sparse:     true,  //仅索引包含关键字段的文档
	}
	err := c.EnsureIndex(index)
	if err != nil {
		fmt.Println(err)
	}
}
